package p_dynamic;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

/**
 * 给所有dao创建代理对象[动态代理]
 * 代理对象，不需要实现接口
 * @author Alex
 */
public class UserDaoProxy {
	//维护接受保存目标对象
	private Object target;
	public UserDaoProxy(Object target){
		this.target=target;
	}
	
	//给目标对象，生成代理对象
	public Object getProxyInstance(){
		return Proxy.newProxyInstance(target.getClass().getClassLoader(),
				target.getClass().getInterfaces(),
				new InvocationHandler() {
					
					@Override
					public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
						System.out.println("----开启事物----");
						
						//执行目标方法
						Object returnValue=method.invoke(target, args);
						System.out.println("----提交事物----");
						return returnValue;
					}
				});
	}

	
	

}
